package com.example.ccj.b.c.custom;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;

import androidx.annotation.Nullable;

import com.example.ccj.R;

/**
 * 自定义图片控件 防止短时间时间内重复点击
 * 添加了两条属性
 * m_click_interval  ：  两次点击的时间间隔（毫秒）默认500
 * m_only_one        ：  是否只能点击一次 默认可以多次点击
 * 2024年4月25日22:49:39
 */
public class MImageView extends androidx.appcompat.widget.AppCompatImageView implements View.OnClickListener{

    long clickTime = 0;
    int checkInterval;
    boolean onlyOne;

    public MImageView(Context context) {
        super(context);
        super.setOnClickListener(this);
    }

    public MImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MImageView);

        //点击间隔
        checkInterval = typedArray.getInteger(R.styleable.MImageView_m_Img_click_interval, 500);
        onlyOne = typedArray.getBoolean(R.styleable.MImageView_m_img_only_one, false);
        super.setOnClickListener(this);

        //回收
        typedArray.recycle();
    }

    OnClickListener onClickListenerN;

    @Override
    public void setOnClickListener(@Nullable OnClickListener l) {
        this.onClickListenerN = l;
    }

    @Override
    public void onClick(View v) {
        if (onlyOne) {
            if (onClickListenerN != null) onClickListenerN.onClick(v);
            this.setEnabled(false);
        } else if (!(System.currentTimeMillis() - clickTime < checkInterval)) {
            clickTime = System.currentTimeMillis();
            if (onClickListenerN != null) onClickListenerN.onClick(v);
        }
    }

    public long getClickTime() {
        return clickTime;
    }

    public void setClickTime(long clickTime) {
        this.clickTime = clickTime;
    }

    public int getCheckInterval() {
        return checkInterval;
    }

    public void setCheckInterval(int checkInterval) {
        this.checkInterval = checkInterval;
    }

    public boolean isOnlyOne() {
        return onlyOne;
    }

    public void setOnlyOne(boolean onlyOne) {
        this.onlyOne = onlyOne;
    }
}
